#define _CRT_SECURE_NO_WARNINGS
//class Solution {
//public:
//    void ispal1(string& A,int mid,int& ret)
//    {
//        if (mid < 0) return;
//        int left = mid, right = mid;
//        if (left * 2 < ret) return;
//        while (A[left] == A[right])
//        {
//            int tmp = right - left + 1;
//            ret = ret < tmp ? tmp : ret;
//            if (left > 0 && right < A.size() - 1) left--, right++;
//            else return;
//        }
//        ispal1(A, mid - 1, ret);
//        return;
//    }
//    void ispal2(string& A, int mid, int& ret)
//    {
//        if (mid >= A.size()) return;
//        int left = mid, right = mid;
//        if ((A.size() - right - 1)*2 < ret) return;
//
//        while (A[left] == A[right])
//        {
//            int tmp = right - left + 1;
//            ret = ret < tmp ? tmp : ret;
//            if (left > 0 && right < A.size() - 1) left--, right++;
//            else return;
//        }
//        ispal2(A, mid + 1, ret);
//        return;
//    }
//    int getLongestPalindrome(string A) {
//        if (A.size() < 2) return A.size();
//        int mid = A.size() / 2;
//        int ret = 0;
//        ispal1(A, mid, ret);
//        ispal2(A, mid, ret);
//
//        return ret;
//    }
//};
//int main()
//{
//    Solution s;
//    string A("ababb");
//    cout<<s.getLongestPalindrome(A);
//	return 0;
//}
